PING.CPX Version 01.01 CPX-Modul der Utility-Serie von mz'92 1. Einleitung PING.CPX ist ein nachladbares Modul fr das modulare Kontrollfeld XCONTROL von Atari. Es erm”glicht die Konfiguration eines residenten Treibers fr die Installation eines Sound-Samples als Fehlerton (Control-G Glocke). PING.CPX ist ein CPX-Modul der Utility-Serie von mz'92. Diese CPX-Module erm”glichen die Konfiguration der System-Hardware und -Software und im Zusammenspiel mit residenten Programmen einige ntzliche Zusatzfunktionen. Die CPX-Module der Utility-Serie sind fr den Einsatz auf Atari ST-Modellen geschrieben. Auf anderen Atari-Rechnern wurden sie nicht getestet. Einige Funktionen sind von der TOS-Version abh„ngig. Zur Zeit sind folgende weitere CPX-Module verfgbar: DIVERSES.CPX V01.12 (1) -Uhrzeiteinblendung, Alarmzeit, Drucker-Code-Konverter, Bildwiederholfrequenzeinstellung DISK.CPX V01.02 (2) -Steprateneinstellung Laufwerke A und B, Floppy-Write-Verify-Wahl, HD-Parken mittels externem PRG TRASH.CPX V01.05 -Installation eines 'leerbaren Papierkorbs' DESKPIC.CPX V01.14 (3) -Anzeige eines Desktop-Hintergrund- Bildes im DEGAS-Format (1) Uhrfunktion nur fr TOS 1.04 oder Hardwareuhr; Frequenzeinstellung nur fr ST (2) HD-Parkfunktion nur fr reine TOS-Programme geeignet (3) nur fr hohe ST-Aufl”sung (640x400 monochrom) Bezug und Information: Michael Zuhl Transvaalstr. 16 1000 Berlin 65 2. šbersicht ber die mitgelieferten Dateien PING.CPX ....... CPX-Modul fr XCONTROL PING.PRG ....... residenter Treiber fr Fehlerton PING.INF ....... Beispiel fr Parameter-Datei fr PING.PRG PING.DOC ....... diese Anleitung (WP-Format) PING.TXT ....... diese Anleitung (ASCII-Format) 2.1 Beschreibung von PING.CPX PING.CPX ist ein nachladbares Modul fr das modulare Kontrollfeld XCONTROL von Atari. Es erm”glicht die Konfiguration des mitgelie- ferten residenten Treibers fr die Installation eines Sound- Samples als Fehlerton (Control-G Glocke) und die Ver„nderung der zugeh”rigen Parameterdatei PING.INF. PING.CPX sollte im gleichen Verzeichnis abgelegt werden wie die brigen CPX-Module, damit es beim Booten von XCONTROL in die Liste der verfgbaren CPX-Module bernommen werden kann. PING.CPX arbeitet nur im Zusammenspiel mit dem residenten Pro- gramm PING.PRG (s. dort). PING.CPX ist ein CPX-Modul der Utility-Serie von mz'92 und als solches frei kopierbar. Es sollte sinnvollerweise nur mit dem Programm PING.PRG und dieser Anleitung weitergegeben werden. Die CPX-Module der Utility-Serie sind fr den Gebrauch mit XCONTROL von Atari auf ST-Systemen konzipiert. Damit unterliegen sie den Einschr„nkungen und Besonderheiten, die Atari in der XCONTROL-Dokumentation aufgefhrt hat (s. dort). 2.2 Beschreibung von PING.PRG PING.PRG ist ein residentes Programm, das einen Treiber fr die Installation eines Sound-Samples als Fehlerton (Control-G Glocke) zur Verfgung stellt. Resident bedeutet, daž sich PING.PRG beim Booten in das Betriebssystem einklinkt und bis zum n„chsten Reset bzw. Ausschalten im Speicher verbleibt. Wegen des Speicherbedarfs fr die Sound-Daten ist dies in Systemen mit geringem Speicher- ausbau je nach L„nge der Sound-Daten eventuell problematisch. PING.PRG sollte wie alle residenten Programme aus dem AUTO-Ordner heraus beim Booten des Systems gestartet werden; da es auf den Zeitpunkt des Starts aber nicht ankommt, ist (nach Umbenennung in PING.TOS) auch ein Start vom Desktop aus m”glich. 2.3 Beschreibung von PING.INF PING.INF ist die Parameterdatei, die der residente Treiber PING.PRG beim Booten ben”tigt, um die Sound-Daten laden und sich initialisieren zu k”nnen. Die mitgelieferte Datei ist nur als Beispiel gedacht und muž an das eigene System angepažt werden. Die Datei kann mit einem normalen ASCII-Editor oder mittels des CPX-Moduls PING.CPX ver„ndert werden. Das Format dieser Datei ist weiter unten beschrieben. 2.4 Beschreibung von PING.DOC und PING.TXT PING.DOC und PING.TXT enthalten jeweils diesen Anleitungstext. PING.DOC liegt im WP-Format vor. Somit kann der Text mit allen Programmen, die das WORDPLUS-Datei-Format verarbeiten k”nnen, gelesen und ausgedruckt werden. PING.TXT enth„lt den Text als reine ASCII-Datei ohne Forma- tierungscodes. Dieser Text kann daher mit ASCII-Editoren und direkt vom Desktop aus gelesen und ausgedruckt werden. 3. Bedienungsanleitung 3.1 Bedienung von PING.CPX PING.CPX wird genauso bedient wie die von Atari mitgelieferten CPX-Module. In der Modul-Liste von XCONTROL tr„gt es sich unter der Bezeichnung 'Fehlerton' ein. Wenn beim Aufruf von PING.CPX von XCONTROL aus der residente Treiber PING.PRG nicht installiert ist, erscheint eine ent- sprechende Alertbox und PING.CPX wird abgebrochen. Die Bedienungselemente von PING.CPX sind in drei Funktionsgruppen unterteilt: Sound-Funktionen ...... Konfiguration des Treibers Info-Funktionen ....... Informationen ber das CPX-Modul Status-Funktionen ..... Speichern/šbernahme von Žnderungen 3.1.1 PING.CPX: Sound-Funktionen Diese Funktionsgruppe besteht aus fnf Bedienungselementen: Glocken-Icon, Sound-Datei, Frequenz, Status und Puffer. Klickt man auf das Glocken-Icon, wird ein Fehlerton ausgegeben. Damit kann die vorgenommene Einstellung ausprobiert werden. Im Feld Sound-Datei wird die ausgew„hlte Sound-Sample-Datei mit dem kompletten Zugriffspfad angezeigt. Ist der Pfad l„nger als das Anzeigefeld kann mittels der Scroll-Kn”pfe links und rechts neben dem Anzeigefeld im Pfad gesrollt werden. Hat der Pfad šberl„nge, wird dies durch die Symbole '®' in der ersten bzw. '¯' in der letzen Spalte angezeigt. Klickt man das Pfad-Anzeigefeld an, erscheint eine Dateiauswahl- box. Hier kann eine neue Sound-Datei ausgew„hlt werden. Dabei ist zu beachten, daž die Auswahl einer neuen Sound-Datei nur dann wirksam wird, wenn die Funktionseinstellungen gesichert werden und das System neu gebootet wird (s. 3.1.3 PING.CPX: Status- Funktionen). Da der residente Treiber aus PING.PRG nur reine 8- Bit-Samples ohne Header oder Zusatzinformationen verarbeiten kann und sich die Dateiendung '.SND' fr solche Dateien eingebrgert hat, ist die Dateiauswahlbox entsprechend vorbelegt. Doppelklick auf einen Dateinamen bzw. Einfachklick auf den Namen und 'OK' w„hlt eine neue Datei aus; klickt man auf 'Abbruch' bleibt die bisherige Sound-Datei gew„hlt. Es empfiehlt sich, nur kurze Samples als Fehlerton auszuw„hlen, da l„ngere Stcke auf die Dauer nervt”tend sein k”nnen und aužerdem w„hrend des Abspielens des Samples nicht weitergearbeitet werden kann (s.a. 3.2.3 PING.PRG: Internes). Im Frequenz-Feld wird die Sample-Abspielgeschwindigkeit einge- stellt. Beim Klick auf den Auswahlknopf erscheint ein Popup-Men, in dem die Frequenzen 6.500, 8.000, 11.000 und 22.000 Hertz anw„hlbar sind. Diese Auswahl wird sofort wirksam. Im Status-Feld kann mittels des dortigen Popup-Mens zwischen Sample (Auswahl 'ein') und System-Fehlerton (Auswahl 'aus') gew„hlt werden. Auch diese Auswahl wird sofort wirksam. Zu beachten ist, daž ein Fehlerton berhaupt nur dann ausgegeben wird, wenn diese Funktion im System eingeschaltet ist [z.B. ber das CPX-Modul GENERAL.CPX (Eintrag: 'Allgemein')]. Die Anzeige im Puffer-Feld hat nur Informationscharakter. Es wird angegeben, wie grož der Puffer fr die geladene Sound-Datei in Bytes ist. Diese Gr”že ist zur Laufzeit nicht ver„nderbar. 3.1.2 PING.CPX: Info-Funktionen Nach dem Anklicken des Informationsknopfes (Namensbox) erscheint eine Informationsbox. Mittels Anklicken des OK-Knopfes oder Drcken der RETURN-Taste gelangt man zurck zum Hauptdialog. 3.1.3 PING.CPX: Status-Funktionen Diese Funktionsgruppe befindet sich am unteren Rand der Dialog- box. Sie besteht aus drei Auswahlkn”pfen: SICHERN, OK und ABBRUCH. SICHERN speichert die aktuellen Funktionseinstellungen nach Rckfrage im CPX-Modul und ver„ndert die Parameterdatei PING.INF entsprechend. Dazu ist es erforderlich, daž sich das CPX-Modul noch im CPX-Verzeichnis befindet und PING.INF dort, wo sie beim Booten des System war. Beim n„chsten Booten des Systems werden dann alle Funktionen so eingestellt wie zum Zeitpunkt des Sicherns. Aužerdem werden die aktuellen Funktionseinstellungen fr Frequenz und Status bernommen. OK bernimmt die Funktionseinstellungen fr Frequenz und Status bis zum n„chsten Reset bzw. Ausschalten des Systems. Das bedeu- tet, daž die Einstellungen bis zum n„chsten Reset bzw. Ausschal- ten erhalten bleiben, beim n„chsten Booten jedoch wieder auf die zuletzt gespeicherten Werte gesetzt werden. Die Sound-Datei kann nur mittels SICHERN (s. oben) und anschliežendem Booten ver„ndert werden. ABBRUCH verwirft die vorgenommenen Žnderungen der Funktionsein- stellungen und stellt den Zustand wieder her, der vorlag, als PING.CPX aufgerufen wurde. Dies gilt nicht fr eine eventuelle Ver„nderung von PING.INF mittels SICHERN! Das Anklicken des Schliežknopfes des Kontrollfeldfensters hat die Wirkung von OK; zus„tzlich wird das Kontrollfeldfenster geschlos- sen. Wenn bei ge”ffnetem Kontrollfeldfenster und aufgerufenem PING.CPX die laufende Applikation beendet wird hat das die gleiche Wirkung wie ABBRUCH, nur daž aužerdem das Kontrollfeldfenster geschlossen wird. 3.2 Bedienung von PING.PRG PING.PRG hat keine eigentlichen Bedienungselemente. Es ist als AUTO-Ordner-Anwendung konzipiert. Da es nicht auf den Zeitpunkt der Installation ankommt und PING.PRG ein reines TOS-Programm ist, kann es auch vom Desktop aus gestartet werden. Es sollte dann jedoch in PING.TOS umbenannt werden. PING.PRG versucht, einen residenten Treiber fr das Abspielen von Sound-Daten als Fehlerton (Control-G Glocke) zu installieren; dabei geben Meldungen Auskunft ber den Stand der Dinge. Was PING.PRG macht ist im Abschnitt 'Internes' angegeben. 3.2.1 PING.PRG: Meldungen PING.PRG gibt w„hrend des Programmlaufs Meldungen auf dem TOS- Bildschirm aus. Zun„chst testet PING.PRG die TOS-Version auf Tauglichkeit. Ist eine untaugliche TOS-Version (< 1.06) installiert wird das Programm mit einer entsprechenden Meldung abgebrochen. Danach berprft PING.PRG, ob es bereits installiert ist und bricht ab, falls dies der Fall ist. Sonst wird die Parameterdatei PING.INF gesucht und zwar zun„chst im AUTO-Ordner und danach im aktuellen Ordner. Kann PING.INF nicht gefunden werden oder ist fehlerhaft, erfolgt ebenfalls Abbruch des Programms. Der Aufbau von PING.INF wird im n„chsten Abschnitt erkl„rt. Dann wird die in PING.INF angegebene Sound-Datei geladen. Wenn dabei ein Fehler auftritt bricht PING.PRG auch ab. Schliežlich werden ein Cookie (s. Internes) und der Treiber fr die Einbindung des Sound-Samples als Fehlerton (Control-G Glocke) installiert. Bei einem Programmabbruch verbleibt PING.PRG selbstverst„ndlich nicht resident im Speicher. 3.2.2 PING.PRG: Aufbau von PING.INF Die Parameterdatei PING.INF, die das residente Programm PING.PRG beim Booten bzw. Starten liest, ist eine reine ASCII-Datei und kann daher mit jedem ASCII-Editor, der keine Steuerzeichen in der Datei hinterl„žt, erstellt werden. Alternativ kann PING.INF mit- tels des CPX-Moduls PING.CPX ver„ndert werden. Wird PING.INF mit einem Editor erstellt, muž folgendes Format eingehalten werden: Das erste Zeichen ist ein Doppelkreuz ('#'), gefolgt von der Gr”že des gewnschten Puffers fr die Sound-Daten in Bytes. Wird hier als Gr”že 0 angegeben, wird der Puffer automatisch auf die Gr”že der zu ladenden Sound-Daten gebracht. Wird eine Gr”že vorgegeben, die kleiner ist als die der Sound-Datei gilt die Gr”že der Datei. In einer neuen Zeile folgt die Angabe der Abspielgeschwindigkeit (Sample-Rate). M”glich sind folgende Angaben: 0 (Rate: 6.500 Hz) 1 (Rate: 8.000 Hz) 2 (Rate: 11.000 Hz) 3 (Rate: 22.000 Hz) Danach folgt in der gleichen Zeile ein Leerzeichen und anschliežend der komplette Zugriffspfad fr die Sound-Datei einschliežlich Laufwerksangabe. Ein Beispiel fr den Inhalt einer PING.INF Datei: #0 2 C:\SOUND\PING.SND Dieser Inhalt h„tte zur Folge, daž der Sound-Daten-Puffer genau die L„nge der Sound-Datei h„tte, das Sample mit 11.000 Hz abgespielt und die Sound-Datei auf Partition C im Ordner "SOUND" unter dem Namen "PING.SND" gesucht wrde. 3.2.3 PING.PRG: Internes Fr Programmierer oder Interessierte wird in diesem Abschnitt angegeben, wie sich PING.PRG ins System einklinkt. PING.PRG ermittelt nach dem Start die TOS-Versionsnummer, da der Treiber erst ab TOS-Version 1.06 lauff„hig ist. Die Versionsnum- mer wird der Komponente os_version der OSHEADER-Struktur, auf die die Systemvariable _sysbase ($4f2) zeigt, entnommen. PING.PRG untersucht dann anhand des Cookie-Jars, ob es bereits installiert ist. Erst sp„ter wird (beim ersten Start) ein eigener Cookie angelegt. Trotzdem schon hier das Vorgehen: Es wird berprft, ob bereits ein Jar angelegt wurde; wenn nicht, legt PING.PRG einen Jar fr acht Cookies an und installiert eine Routine im Reset-Vektor, die den Jar bei einem Reset l”scht (XBRA-Kennung "MZPI"). Existiert bereits ein Jar, wird unter- sucht, ob PING.PRG bereits installiert wurde; in diesem Fall wird das Programm abgebrochen und bleibt selbstverst„ndlich nicht noch einmal resident im Speicher. Ist PING.PRG noch nicht installiert, wird ein neuer Cookie angelegt; ist der Jar voll, legt PING.PRG einen g”žeren an. Wenn ein Cookie angelegt werden kann, hat dieser die Kennung (Magic) "MZPI" (0x4D5A50449L). Der Wert (Value) des Cookies enth„lt einen Pointer auf die zentrale Datenstruktur von PING.PRG: typedef struct { int status; char *buffer; long buflen; unsigned int version; int rate; char sample_path[256]; char inf_path[256]; } PING_INFO; Die Bedeutung der einzelnen Komponenten: status: (R/W) 1 = PING-Treiber, 0 = System-Fehlerton buffer: (R/O) Adresse Sound-Daten-Puffer buflen: (R/O) L„nge des Puffers version: (R/O) Version: Highbyte - Hauptrevision Lowbyte - Unterrevision rate: (R/W) Abspielrate (Sample-Rate) 0 = 6.500, 2 = 8.000, 4 = 11.000, 6 = 22.000 Hertz sample_path: (R/O) Zugriffspfad Sounddatei inf_path: (R/O) Zugriffspfad PING.INF Hinweise: Alle mit (R/O) bezeichneten Komponenten sind READ ONLY, d.h. schreibender Zugriff auf diese Komponenten hat keinen Einfluž auf den Treiber und sollte unterbleiben. Daraus folgt, daž eine Ver„nderung der Sound-Daten zur Laufzeit nur durch direktes šberschreiben mit neuen Daten m”glich ist, wobei unbedingt die L„nge des Datenpuffers zu beachten ist! Dieses zugegebenermažen d„mliche Verhalten des Treibers wird in einer sp„teren Version berarbeitet werden. Versprochen! Man beachte aužerdem die Codierung der Sample-Rate, die von der in PING.INF verwendeten abweicht! (Dies ist ein Feature und kein Bug :-) Nach der Installationskontrolle sucht und l„dt PING.PRG die Datei PING.INF (im AUTO- und im aktuellen Ordner) und l„dt anschliežend die angegebene Sound-Datei. Tritt hierbei kein Fehler auf (Datei nicht vorhanden, Datei fehlerhaft, nicht gengend Speicher, etc.), wird die obige Datenstruktur gefllt, ein Cookie instal- liert (s. oben) und die Treiber-Routine installiert. Dazu wird der Zeiger bell_hook (Systemvariable, $5ac) XBRA- konform verbogen (XBRA-ID: MZPI). Die Sample-Abspielroutine und die Sound-Lookup-Tabelle stammen aus dem Programm "RESOUND" von David Snow. Dieses Programm ist frei verfgbar (Public domain), sowohl als Binary wie auch als Source-Code und dient dem 'normalen' Abspielen vom Sound-Dateien (ohne Einbindung ins Betriebssystem). Die Abspielroutine benutzt den Timer A des Multifunktionsbausteins MFP 68901. Aus diesem Grund kann es zu Schwierigkeiten kommen, wenn ein Programm ebenfalls diesen Timer benutzt und w„hrenddessen ein Fehlerton ber diese Abspielroutine ausgegeben werden soll. Bei Benutzung eines solchen Programms sollte also der Fehlerton-Treiber ber das CPX-Modul PING.CPX abgeschaltet werden. [Ein Programm, bei dem dieses notwendig ist, ist der Videotext-Decoder von Print- Technik. Da dieser Decoder (gemeint ist die Software; gilt auch fr den stand-alone Treiber) jedoch einige "Eigentmlichkeiten" aufweist, sollte man ihn ohnehin besser nicht benutzen; es gibt stabilere Treiber und Decoder fr die durch die mitgelieferte Software nicht ausgereizte gute Decoder-Hardware. Aber das ist eine andere Geschichte.] Eine weitere Besonderheit der Abspielroutine von David Snow: W„hrend der Sample-Ausgabe sind alle Interrupts gesperrt. Daraus folgt, daž z.B. Tastatur- und Mauseingaben verloren gehen oder mižinterpretiert werden k”nnten. Da aber als Fehlerton im allge- meinen nur kurze Samples in Betracht kommen, f„llt dieses nicht allzusehr ins Gewicht. Die Abspielqualit„t macht eventuelle Nachteile ohnehin wett. Nach Initialisierung des Treibers bleibt PING.PRG mittels Ptermres() im Speicher resident. PING.PRG wurde in Assembler geschrieben (PureAssembler, ASH) und PING.CPX in PureC (auch ASH). 4. Copyright und Haftungsausschluž PING.CPX und PING.PRG wurden entwickelt von Michael Zuhl Transvaalstr. 16 1000 Berlin 65 PING.PRG benutzt zum Abspielen von Sound-Samples Routinen, die zu diesem Zweck von David Snow entwickelt und zur freien Verwendung ver”ffentlicht wurden. Einige Anregungen, Ideen und Tricks wurden abgeguckt aus folgen- den Quellen: - CPX-Programmierung: "CPX - Dem variablen Kontrollfeld auf der Spur", Serie in ST-Computer 3-5/91 + 9/91, Uwe Hax und Oliver Scholz - Cookiejar-Prinzip: "STee-Geb„ck - Das Cookie-Jar-Prinzip", in ST-Computer 12/90, Rolf Kotzian "Vorhang auf fr die Keksdose", in ST-Magazin 3/90, Julian F. Reschke - XBRA-Protokoll und berhaupt: Atari ST Profibuch, Jankowski/Rabich/Reschke, SYBEX-Verlag, 10.Auflage 1991 Die CPX-Module der Utility-Serie von mz'92 (also auch PING.CPX und PING.PRG) sind Freeware, d.h. sie drfen kopiert und weiter- gegeben werden, solange dies nicht kommerziell geschieht; davon ausgenommen ist lediglich die Verbreitung ber PD-Disketten, solange diese gegen einen geringen Unkostenbeitrag abgegeben werden. Obwohl bei der Programmierung alle Sorgfalt gebt wurde und PING.CPX und PING.PRG bei mir fehlerfrei laufen, kann ich keinerlei Garantie oder Haftung bernehmen, weder fr die angege- benen Funktionen noch fr irgendwelche eventuell aus dem Gebrauch dieser Programme entstehenden Folgesch„den. Der Einsatz dieser Programme erfolgt ausschliežlich auf eigenes Risiko. PING.CPX V01.01 PING.PRG V01.02 29.12.92 mz'92